與新增資料的步驟很像,修改一樣有兩個步驟:
第一個步驟是找到你要修改的那筆資料,第二個步驟是送出表單update那筆資料。
首先編輯guests_controller.rb
def edit
@guest = Guest.find(params[:id])
end
並編輯edit.html.erb
<%= form_for @guest, :url => {:controller => 'guests', :action =>'update', :id => @guest} do |e| %>
<%= e.label :title, "Title" %>
<%= e.text_field :title %>
<%= e.label :description, "Description" %>
<%= e.text_area :description %>
<%= e.submit "確認修改" %>
<% end %>
這個表單會在頁面上呈現目前的資料並可供修改,送出後會將表單送到 guests_controller的 update action,我們要在update action裡接這個表單,並修改這筆資料。
def update
@guest = Guest.find(params[:id])
@guest.update_attributes(guests_params)
redirect_to :action => :show, :id => @guest
end
這邊的guests_params是我為了接這個 parmas另外寫的 function,請見(06) - 新增資料
最後是刪除這個功能,一樣是找到要刪除的那筆資料,呼叫destroy方法,刪除資料庫這筆資料。
def destroy
@guest = Guest.find(params[:id])
@guest.destroy
redirect_to :action => :index
end